package engine.logic
{
	import engine.control.MenuList;
	
	import flash.events.MouseEvent;
	import flash.utils.Dictionary;
	import flash.utils.getTimer;

	public class DoubleClickManager
	{
		private var _doubleVoDic 	: 	Dictionary = new Dictionary( true );
		
		private static	 var _self	:	DoubleClickManager;
		
		public static function getInstance():DoubleClickManager
		{
			if ( _self == null )
			{
				_self = new DoubleClickManager();
			}
			return _self;
		}
		
		public function addDoubleClick( cla : Class, clickFunc : Function, doubleClickFunc : Function ) : void
		{
			_doubleVoDic[ cla ] = new DoubleVo( clickFunc, doubleClickFunc );
		}
		
		public function onClick( cla : Class, evt : MouseEvent ):void
		{
			var doubleVo : DoubleVo = _doubleVoDic[ cla ];
			
			if( null == doubleVo )
			{
				return;
			}
			
			if( getTimer() - doubleVo.frontTime < 250 )
			{//双击
				MenuList.hide();
//				clearTimeout( doubleVo.timeIndex );
				
				doubleVo.doubleClickFunc.call( this, evt );
			}
			else
			{
				doubleVo.clickFunc( evt );
//				doubleVo.timeIndex = setTimeout( doubleVo.clickFunc, 250, evt );
			}
			
			doubleVo.frontTime = getTimer();
		}
	}
}

class DoubleVo
{
	public var clickFunc 		: Function;
	
	public var doubleClickFunc	: Function;
	
	public var frontTime		: int;
	
	public var timeIndex		: int;
	
	public function DoubleVo( clickFunc : Function, doubleClickFunc : Function )
	{
		this.clickFunc 			=	clickFunc;
		this.doubleClickFunc	=	doubleClickFunc;
	}
}